Command levels

Read-eval-print loops may be invoked recursively. Each currently running read-eval-print loop is said to be at a different command level. The initial read-eval-print loop is at top level, and recursive read-eval-print loops are at successively deeper levels.

The level of the current command loop is reflected in the way the loop prompts for input. At top level, the prompt is a single greater-than sign (>). At deeper command levels, the prompt contains as many greater-than signs as there are active read-eval-print loops; for example, ยป> if there are two recursive read-eval-print loops beneath the top level one.

Deeper command levels are usually entered as the result of program execution errors, but may also be entered because of a keyboard interrupt or an explicit call to BREAKPOINT.

Interrupts: Issuing a keyboard interrupt will asynchronously enter a read-eval-print loop. One may proceed from this breakpoint, at the point where computation was interrupted, by doing (RET). Keyboard interrupts are normally issued under Aegis by giving a Display Manager DQ command (normally assigned to control-Q), under VMS by typing control-C, or under Unix by typing the interrupt character (normally control-C or DEL).

End-of-file: An end-of-file condition on the terminal input port (see page [*]) which occurs at a read-eval-print loop will cause control to transfer up one command level to the next read-eval-print loop. End-of-file can usually be generated under Aegis with the display manager EEF command (normally assigned to control-Z), under VMS by typing control-Z, or under Unix by typing the end of file character (normally control-D).

(RESET)


\begin{inset}{}
Transfers control directly to the top-level read-eval-print loop
by performing a throw (see page \pageref{CATCH}).
\end{inset}


\begin{inset}{}
Enters a read-eval-print loop. If {\it message\/} is non-null, t...
... the read-eval-print loop at the next higher level,
which continues.
\end{inset}